#lang racket

(define (f n)
  (define (f-rec n)
    (if (< n 3)
        n
        (+ (f-rec (- n 1))
           (* 2 (f-rec (- n 2)))
           (* 3 (f-rec (- n 3))))))
  (define (f-iter t t1 t2 c)
    (if (< n 3) n
        (if (= c n)
            t
            (f-iter (+ t (* 2 t1) (* 3 t2))
                    t t1 (+ c 1)))))
  ;(f-iter 4 2 1 3)
  (f-rec n)
  )
(f 5)
